﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sociedad.BL;
using Sociedad.DAL;

public partial class SOA_BandejaWF_Evaluar_SolicitudInscripcion : System.Web.UI.Page
{
    soa_SolicitudInscripcion beSIns = new soa_SolicitudInscripcion();
    SolicitudInscripcionBL blSIns = new SolicitudInscripcionBL();
    WfDocumentoBL blDocWF = new WfDocumentoBL();
    Wfs_SeguimientoDocumento beDocWF = new Wfs_SeguimientoDocumento();

    String codSol;
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                if (Session[Constantes.session_Codigo_SolicitudInscripcion] != null)
                {
                    codSol = Session[Constantes.session_Codigo_SolicitudInscripcion].ToString();
                    Inicializar();
                }
                else
                {
                    lblMsj.Text = "Se produjo un error al intentar cargar los datos de la solicitud, volver a intentar.";
                    lblMsj.ForeColor = System.Drawing.Color.Red;
                    lblMsj.Visible = true;   
                }
            }
            else
            {
                lblMsj.Visible = false;
            }
        } 
        catch (Exception ex) 
        {
            lblMsj.Text = "Se produjo un error inesperado, volver a intentar.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;   
        }
    }

    private void Inicializar()
    {
        // Cargar Datos
        beSIns = blSIns.Buscar_SolicitudInscripcionxCod(codSol);
        txtCodSolicitud.Text = codSol;
        txtNroRUC.Text = beSIns.csin_RUC;
        txtRazonSocial.Text = beSIns.csin_RazonSocial;
        txtTelefonos.Text = beSIns.csin_Telefonos;
        txtEmail.Text = beSIns.csin_Email;
        txtTipDoc.Text = beSIns.cprm_TipDocAcceso;
        txtNroDoc.Text = beSIns.csin_NroDocAcceso;
        txtApellidos.Text = beSIns.csin_ApellidosAcceso;
        txtNombres.Text = beSIns.csin_NombresAcceso;
        txtEmailRep.Text = beSIns.csin_EmailAcceso;
        txtAudFinanciera.Text = beSIns.nsin_AudFin.ToString();
        txtAudGestion.Text = beSIns.nsin_AudGes.ToString();
        txtColegioProf.Text = beSIns.csin_ColProfesional;
        txtNroMatricula.Text = beSIns.csin_NroMatricula;
        txtFecColegiatura.Text = String.Format("{0:dd/MM/yyyy}",beSIns.dsin_FecColegiatura);
        txtLugarPago.Text = beSIns.csin_LugarPago;
        txtFecPago.Text = String.Format("{0:d}",beSIns.dsin_FecPago);
        txtNroDoc.Text = beSIns.csin_NroOperacion;

        //Cargar Opciones WF
        List<vw_Listar_OpcionesWF_CalificacionDoc> lstOp = new List<vw_Listar_OpcionesWF_CalificacionDoc>();
        vw_Listar_OpcionesWF_CalificacionDoc beOp = new vw_Listar_OpcionesWF_CalificacionDoc();
        beOp.cEstDestino = "0";
        beOp.cEstDestinoDes = "<Seleccionar>";
        lstOp = blDocWF.Listar_OpcionesWF_CalificacionDOC(Constantes.wfTipDoc_SolicitudInscripcion, beSIns.cprm_Estado);
        List<vw_Listar_OpcionesWF_CalificacionDoc> lstOp1 = new List<vw_Listar_OpcionesWF_CalificacionDoc>();
        lstOp1.Add(beOp);
        for (int i = 1; i <= lstOp.Count(); i++)
        {
            lstOp1.Add(lstOp[i - 1]);
        }
        ddlOpcion.DataSource = lstOp1;
        ddlOpcion.DataTextField = "cEstDestinoDes";
        ddlOpcion.DataValueField = "cEstDestino";
        ddlOpcion.SelectedValue = "0";
        ddlOpcion.DataBind();
    }

    protected void imbCerrar_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("BandejaEvaluador.aspx");
    }

    protected void imbAceptar_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            String cRpta = Validar_DatosWF();
            if (String.IsNullOrEmpty(cRpta))
            {
                modalPopupGuardar.Show(); 
            }
            else
            {
                lblMsj.Text = cRpta;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                lblMsj.Visible = true;   
            }
        }
        catch (Exception ex)
        {
            lblMsj.Text = "Se produjo un error al intentar validar los datos, volver a intentar.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;   
        }
    }

    private String Validar_DatosWF()
    {
        if (ddlOpcion.SelectedValue.Equals("0"))
        {
            return "Seleccione una opción como resultado de la evaluación del documento.";
        }
        if (ddlOpcion.SelectedValue.Equals(Constantes.Estado_SolcitudInscripcion_Denegado) && String.IsNullOrEmpty(txtComentario.Text))
        {
            return "Está denegando el documento, debe de registrar un comentario de sustento.";
        }
        return "";
    }

    // Método para registrar resultado de evaluación
    protected void imbOK2_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            // En estado Emitido: 2001
            beDocWF.ctdo_Codigo = "SINS01";
            beDocWF.cedo_CodDoc = txtCodSolicitud.Text;
            beDocWF.cprm_EnviaTipUO = Session[Constantes.session_CodTipUO].ToString();
            beDocWF.cent_EnviaUO = Session[Constantes.session_CodUniOrg].ToString();
            beDocWF.usr_EnviaUser = Session[Constantes.session_CodUsuario].ToString();
            beDocWF.csdo_Comentario = txtComentario.Text;
            beDocWF.cprm_Estado = ddlOpcion.SelectedValue;

            String[] cRpta = blDocWF.Registrar_DocumentoWF(beDocWF, 'S').Split('@');
            if (cRpta[0] == "1")
            {
                Response.Redirect("BandejaEvaluador.aspx");
            }
            else
            {
                if (String.IsNullOrEmpty(cRpta[1]))
                {
                    lblMsj.Text = "Se produjo un error inesperado, cierre la ventana y vuelva a intentar enviar.";
                    lblMsj.ForeColor = System.Drawing.Color.Red;
                    lblMsj.Visible = true;
                }
                else
                {
                    lblMsj.Text = cRpta[1];
                    lblMsj.ForeColor = System.Drawing.Color.Red;
                    lblMsj.Visible = true;
                }
            }
        }
        catch (Exception ex)
        {
            lblMsj.Text = "Se produjo un error inesperado al intentar registrar el resultado de la evaluación, cierre la ventana y vuelva a intentar enviar.";
            lblMsj.ForeColor = System.Drawing.Color.Red;
            lblMsj.Visible = true;
        }
    }
}